style: Add _gtk_style_provider_private_get_settings()
authorBenjamin Otte <otte@redhat.com>
Sat, 1 Dec 2012 00:24:12 +0000 (01:24 +0100)
committerBenjamin Otte <otte@redhat.com>
Sat, 1 Dec 2012 00:24:12 +0000 (01:24 +0100)
This gives a GtkSettings object for resolving system-dependant things -
like the default font family and font size.
No code does this yet, but we have an API.

Only GtkSettings implements this.

gtk/gtksettings.c
gtk/gtkstylecascade.c
gtk/gtkstyleproviderprivate.c
gtk/gtkstyleproviderprivate.h

index 2996c98f7dccb26eef54f316b4200e57451a3fe4..0aefce6374ae7c0a2da16c5db8ba109215a9ee9f 100644 (file)
@@ -1454,6 +1454,12 @@ gtk_settings_provider_iface_init (GtkStyleProviderIface *iface)
 {
 }
 
+static GtkSettings *
+gtk_settings_style_provider_get_settings (GtkStyleProviderPrivate *provider)
+{
+  return GTK_SETTINGS (provider);
+}
+
 static void
 gtk_settings_style_provider_lookup (GtkStyleProviderPrivate *provider,
                                     const GtkCssMatcher     *matcher,
@@ -1472,6 +1478,7 @@ gtk_settings_style_provider_lookup (GtkStyleProviderPrivate *provider,
 static void
 gtk_settings_provider_private_init (GtkStyleProviderPrivateInterface *iface)
 {
+  iface->get_settings = gtk_settings_style_provider_get_settings;
   iface->lookup = gtk_settings_style_provider_lookup;
 }
 
index a71a55e2a8e13d5e8e8d35678f299ab78e94ceab..ea63fc86f6637c56c2a05f3e0cf29150ebfe0f38 100644 (file)
@@ -123,6 +123,29 @@ gtk_style_cascade_provider_iface_init (GtkStyleProviderIface *iface)
   iface->get_style_property = gtk_style_cascade_get_style_property;
 }
 
+static GtkSettings *
+gtk_style_cascade_get_settings (GtkStyleProviderPrivate *provider)
+{
+  GtkStyleCascade *cascade = GTK_STYLE_CASCADE (provider);
+  GtkStyleCascadeIter iter;
+  GtkSettings *settings;
+  GtkStyleProvider *item;
+
+  for (item = gtk_style_cascade_iter_init (cascade, &iter);
+       item;
+       item = gtk_style_cascade_iter_next (cascade, &iter))
+    {
+      if (!GTK_IS_STYLE_PROVIDER_PRIVATE (item))
+        continue;
+          
+      settings = _gtk_style_provider_private_get_settings (GTK_STYLE_PROVIDER_PRIVATE (item));
+      if (settings)
+        return settings;
+    }
+
+  return NULL;
+}
+
 static GtkCssValue *
 gtk_style_cascade_get_color (GtkStyleProviderPrivate *provider,
                              const char              *name)
@@ -233,6 +256,7 @@ static void
 gtk_style_cascade_provider_private_iface_init (GtkStyleProviderPrivateInterface *iface)
 {
   iface->get_color = gtk_style_cascade_get_color;
+  iface->get_settings = gtk_style_cascade_get_settings;
   iface->get_keyframes = gtk_style_cascade_get_keyframes;
   iface->lookup = gtk_style_cascade_lookup;
   iface->get_change = gtk_style_cascade_get_change;
index 7fb59d31c71282527b174b638182d392c37537a7..1f62b88807fb5d93a8a09fa88f299b3f95583837 100644 (file)
@@ -125,3 +125,18 @@ _gtk_style_provider_private_changed (GtkStyleProviderPrivate *provider)
   g_signal_emit (provider, signals[CHANGED], 0);
 }
 
+GtkSettings *
+_gtk_style_provider_private_get_settings (GtkStyleProviderPrivate *provider)
+{
+  GtkStyleProviderPrivateInterface *iface;
+
+  g_return_val_if_fail (GTK_IS_STYLE_PROVIDER_PRIVATE (provider), NULL);
+
+  iface = GTK_STYLE_PROVIDER_PRIVATE_GET_INTERFACE (provider);
+
+  if (!iface->get_settings)
+    return NULL;
+
+  return iface->get_settings (provider);
+}
+
index 76e2a98f711deacea35f371c8feeb36ee4532ea5..c619d8d75b0516a1fe56f7fe33c322613ebeca13 100644 (file)
@@ -41,6 +41,7 @@ struct _GtkStyleProviderPrivateInterface
 
   GtkCssValue *         (* get_color)           (GtkStyleProviderPrivate *provider,
                                                  const char              *name);
+  GtkSettings *         (* get_settings)        (GtkStyleProviderPrivate *provider);
   GtkCssKeyframes *     (* get_keyframes)       (GtkStyleProviderPrivate *provider,
                                                  const char              *name);
   void                  (* lookup)              (GtkStyleProviderPrivate *provider,
@@ -55,6 +56,7 @@ struct _GtkStyleProviderPrivateInterface
 
 GType                   _gtk_style_provider_private_get_type     (void) G_GNUC_CONST;
 
+GtkSettings *           _gtk_style_provider_private_get_settings (GtkStyleProviderPrivate *provider);
 GtkCssValue *           _gtk_style_provider_private_get_color    (GtkStyleProviderPrivate *provider,
                                                                   const char              *name);
 GtkCssKeyframes *       _gtk_style_provider_private_get_keyframes(GtkStyleProviderPrivate *provider,